import pandas as pd
import macropodus
from flask import Flask, jsonify, request, Response

context = {
    '企业标签':[
        {'name': '基本信息-成立年限', 'thred': 0.9},
        {'name': '基本信息-基本资本', 'thred': 0.9},
        {'name': '基本信息-省份地区（完整参加地理字典标签）', 'thred': 0.9},
        {'name': '基本信息-机构类型', 'thred': 0.9},
        {'name': '基本信息-企业类型', 'thred': 0.9},
        {'name': '基本信息-企业规模', 'thred': 0.9},
        {'name': '基本信息-国民经济行业分类', 'thred': 0.9},
        {'name': '基本信息-法人类型', 'thred': 0.9},
        {'name': '基本信息-注册登记机关', 'thred': 0.9},
        {'name': '质量创新信息-资质证书', 'thred': 0.9},
        {'name': '质量创新信息-知识产权', 'thred': 0.9},
        {'name': '质量创新信息-商标信息', 'thred': 0.9},
        {'name': '质量创新信息-企业荣誉', 'thred': 0.9},
        {'name': '企业风险信息-失信信息', 'thred': 0.9},
        {'name': '企业风险信息-动产抵押', 'thred': 0.9},
        {'name': '企业风险信息-企业信用', 'thred': 0.9},
        {'name': '企业经营状态-税务评级', 'thred': 0.9},
        {'name': '企业经营状态-上市状态', 'thred': 0.9},
        {'name': '企业经营状态-注册状态', 'thred': 0.9},
        {'name': '企业经营状态-融资信息', 'thred': 0.9},
        {'name': '企业经营状态-参保人数', 'thred': 0.9},
        {'name': '企业经营状态-资本类型', 'thred': 0.9}
    ],
    '政策标签':[
        {'name': '政策基本信息-政策性质', 'thred': 0.9},
        {'name': '政策基本信息-政策发布部门', 'thred': 0.9},
        {'name': '政策基本信息-政策发文属地（完整参加地理字典标签）', 'thred': 0.9},
        {'name': '政策基本信息-政策服务对象', 'thred': 0.9},
        {'name': '政策基本信息-政策申报有效期限', 'thred': 0.9},
        {'name': '政策基本信息-政策发文层级', 'thred': 0.9},
        {'name': '政策基本信息-公文种类', 'thred': 0.9},
        {'name': '政策涉及对象-政策提及行业类型', 'thred': 0.9},
        {'name': '政策涉及对象-政策提及机构类型', 'thred': 0.9},
        {'name': '其他政策信息-政策类别', 'thred': 0.9},
        {'name': '其他政策信息-政策主题分类', 'thred': 0.9},
        {'name': '其他政策信息-政策服务事项', 'thred': 0.9}
    ],
    '政策企业标签': [
        {'name': '政策提及的企业规模', 'thred': 0.9},
        {'name': '政策涉及企业限制词标签', 'thred': 0.9},
        {'name': '政策提及企业行业', 'thred': 0.9},
        {'name': '政策服务涉及企业与个人对象', 'thred': 0.9},
        {'name': '政策提及企业涉及产品字典', 'thred': 0.9},
        {'name': '政策提及企业涉及服务字典', 'thred': 0.9},
        {'name': '政策涉及高技术产业（服务业）详细标签', 'thred': 0.9},
        {'name': '政策涉及高技术产业(制造业）详细标签', 'thred': 0.9},
        {'name': '政策涉及国家科技服务业详细标签', 'thred': 0.9},
        {'name': '政策涉及国家旅游及相关产业详细标签', 'thred': 0.9},
        {'name': '政策涉及健康产业详细标签', 'thred': 0.9},
        {'name': '政策涉及教育培训及相关产业详细标签', 'thred': 0.9},
        {'name': '政策涉及节能环保清洁产业详细标签', 'thred': 0.9},
        {'name': '政策涉及农业及相关产业详细标签', 'thred': 0.9},
        {'name': '政策涉及生产性服务业详细标签', 'thred': 0.9},
        {'name': '政策涉及生活性服务业详细标签', 'thred': 0.9},
        {'name': '政策涉及数字经济及其核心产业详细标签', 'thred': 0.9},
        {'name': '政策涉及体育产业详细标签', 'thred': 0.9},
        {'name': '政策涉及文化及相关产业详细标签', 'thred': 0.9},
        {'name': '政策涉及养老产业详细标签', 'thred': 0.9},
        {'name': '政策涉及战略性新兴产业详细标签', 'thred': 0.9},
        {'name': '政策涉及知识产权（专利）密集型产业详细标签', 'thred': 0.9}]
}

def load_data(sheet_name):
    df = pd.read_excel('result/ReadyResult.xlsx', sheet_name=sheet_name)
    return df

app = Flask(__name__)

@app.route('/getSimWord', methods=['POST'])
def getSimWord ():
    if request.method == "POST":
        if request.content_type.startswith('application/json'):
            NewWord = request.json.get('newword')
        elif request.content_type.startswith('multipart/form-data'):
            NewWord = request.form.get('newword')
        else:
            NewWord = request.values.get("newword")
    # print(NewWord)
    MaxScore = 0.9
    Maxdata= {}
    tag = 0    #用来标记有没有最大者被更新
    for key, values in context.items():
        df = load_data(key)
        for col_num, value in enumerate(values):
            data = df[value['name']]
            length = data.notnull().sum()
            for i in range(length):
                Data = data[i].split(";")[0]
                sents = macropodus.sim(Data, NewWord, type_sim="total", type_encode="avg")
                if sents > MaxScore:
                    MaxScore = sents
                    Maxdata['一级标签'] = key
                    Maxdata['二级标签'] = value['name']
                    Maxdata['totalsimword'] = data[i]
                    Maxdata['simword'] = Data
                    tag = 1
    if tag == 0:
        return {"errcode": 1, "errmsg": "没有找到该词的同义词","data":Maxdata}
    else:
        return {"errcode": 0, "errmsg": "", "data":Maxdata}



if __name__ == '__main__':
    ip = '10.112.83.133'
    port = 19996
    app.run(ip, port, debug=True)